home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Personal Computer World 2009 February
/
PCWFEB09.iso
/
Software
/
Resources
/
Chat & Communication
/
Digsby build 37
/
digsby_setup.exe
/
lib
/
PIL
/
PSDraw.pyo
(
.txt
)
< prev
next >
Wrap
Python Compiled Bytecode
|
2008-10-13
|
5KB
|
94 lines
# Source Generated with Decompyle++
# File: in.pyo (Python 2.5)
import EpsImagePlugin
import string
class PSDraw:
def __init__(self, fp = None):
if not fp:
import sys as sys
fp = sys.stdout
self.fp = fp
def begin_document(self, id = None):
self.fp.write('%!PS-Adobe-3.0\nsave\n/showpage { } def\n%%EndComments\n%%BeginDocument\n')
self.fp.write(EDROFF_PS)
self.fp.write(VDI_PS)
self.fp.write('%%EndProlog\n')
self.isofont = { }
def end_document(self):
self.fp.write('%%EndDocument\nrestore showpage\n%%End\n')
if hasattr(self.fp, 'flush'):
self.fp.flush()
def setfont(self, font, size):
if not self.isofont.has_key(font):
self.fp.write('/PSDraw-%s ISOLatin1Encoding /%s E\n' % (font, font))
self.isofont[font] = 1
self.fp.write('/F0 %d /PSDraw-%s F\n' % (size, font))
def setink(self, ink):
print '*** NOT YET IMPLEMENTED ***'
def line(self, xy0, xy1):
xy = xy0 + xy1
self.fp.write('%d %d %d %d Vl\n' % xy)
def rectangle(self, box):
self.fp.write('%d %d M %d %d 0 Vr\n' % box)
def text(self, xy, text):
text = string.joinfields(string.splitfields(text, '('), '\\(')
text = string.joinfields(string.splitfields(text, ')'), '\\)')
xy = xy + (text,)
self.fp.write('%d %d M (%s) S\n' % xy)
def image(self, box, im, dpi = None):
if not dpi:
if im.mode == '1':
dpi = 200
else:
dpi = 100
x = float(im.size[0] * 72) / dpi
y = float(im.size[1] * 72) / dpi
xmax = float(box[2] - box[0])
ymax = float(box[3] - box[1])
if x > xmax:
y = y * xmax / x
x = xmax
if y > ymax:
x = x * ymax / y
y = ymax
dx = (xmax - x) / 2 + box[0]
dy = (ymax - y) / 2 + box[1]
self.fp.write('gsave\n%f %f translate\n' % (dx, dy))
if (x, y) != im.size:
sx = x / im.size[0]
sy = y / im.size[1]
self.fp.write('%f %f scale\n' % (sx, sy))
EpsImagePlugin._save(im, self.fp, None, 0)
self.fp.write('\ngrestore\n')
EDROFF_PS = '/S { show } bind def\n/P { moveto show } bind def\n/M { moveto } bind def\n/X { 0 rmoveto } bind def\n/Y { 0 exch rmoveto } bind def\n/E { findfont\n dup maxlength dict begin\n {\n 1 index /FID ne { def } { pop pop } ifelse\n } forall\n /Encoding exch def\n dup /FontName exch def\n currentdict end definefont pop\n} bind def\n/F { findfont exch scalefont dup setfont\n [ exch /setfont cvx ] cvx bind def\n} bind def\n'
VDI_PS = '/Vm { moveto } bind def\n/Va { newpath arcn stroke } bind def\n/Vl { moveto lineto stroke } bind def\n/Vc { newpath 0 360 arc closepath } bind def\n/Vr { exch dup 0 rlineto\n exch dup neg 0 exch rlineto\n exch neg 0 rlineto\n 0 exch rlineto\n 100 div setgray fill 0 setgray } bind def\n/Tm matrix def\n/Ve { Tm currentmatrix pop\n translate scale newpath 0 0 .5 0 360 arc closepath\n Tm setmatrix\n} bind def\n/Vf { currentgray exch setgray fill setgray } bind def\n'
ERROR_PS = '/landscape false def\n/errorBUF 200 string def\n/errorNL { currentpoint 10 sub exch pop 72 exch moveto } def\nerrordict begin /handleerror {\n initmatrix /Courier findfont 10 scalefont setfont\n newpath 72 720 moveto $error begin /newerror false def\n (PostScript Error) show errorNL errorNL\n (Error: ) show\n /errorname load errorBUF cvs show errorNL errorNL\n (Command: ) show\n /command load dup type /stringtype ne { errorBUF cvs } if show\n errorNL errorNL\n (VMstatus: ) show\n vmstatus errorBUF cvs show ( bytes available, ) show\n errorBUF cvs show ( bytes used at level ) show\n errorBUF cvs show errorNL errorNL\n (Operand stargck: ) show errorNL /ostargck load {\n dup type /stringtype ne { errorBUF cvs } if 72 0 rmoveto show errorNL\n } forall errorNL\n (Execution stargck: ) show errorNL /estargck load {\n dup type /stringtype ne { errorBUF cvs } if 72 0 rmoveto show errorNL\n } forall\n end showpage\n} def end\n'